package com.ruyiadmin.springboot.service_layer.interfaces.system_interfaces;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruyiadmin.springboot.common_infrastructure.models.SearchCondition;
import com.ruyiadmin.springboot.common_infrastructure.models.ActionResponseResult;
import com.ruyiadmin.springboot.common_infrastructure.models.QueryResponseResult;
import com.ruyiadmin.springboot.entity_data_model.data_transformation_model.system_model.LoginDTO;
import com.ruyiadmin.springboot.common_infrastructure.classes.SysUserDTO;
import com.ruyiadmin.springboot.entity_data_model.entity_model.system_model.SysUser;

import java.util.List;

/**
 * <p>
 * 系统用户 服务类
 * </p>
 *
 * @author RuYiAdmin
 * @since 2022-06-28
 */
public interface ISysUserService extends IService<SysUser> {

    /**
     * 用户登录系统
     *
     * @param login LoginDTO
     * @return ActionResult
     * @throws Exception 异常
     */
    ActionResponseResult logon(LoginDTO login) throws Exception;

    /**
     * 获取在线用户
     *
     * @return QueryResult
     */
    QueryResponseResult<SysUserDTO> queryOnlineUsers();

    /**
     * 加载系统用户缓存
     */
    void loadSystemUserCache();

    /**
     * 清理系统用户缓存
     */
    void clearSystemUserCache();

    /**
     * 用户退出登录
     *
     * @param token 口令
     * @return ActionResult
     */
    ActionResponseResult userLogout(String token);

    /**
     * 强制用户退出
     *
     * @param token 口令
     * @return ActionResult
     * @throws Exception 异常
     */
    ActionResponseResult forceUserLogout(String token) throws Exception;

    /**
     * 获取机构用户
     *
     * @param searchCondition 查询条件
     * @return QueryResult
     */
    QueryResponseResult<SysUserDTO> queryOrgUserInfo(SearchCondition searchCondition);

    /**
     * <p>
     * 查询所有用户信息
     * </p>
     *
     * @return 用户集合
     */
    List<SysUser> queryAllUsers();

}
